package controller;

import com.google.gson.Gson;
import model.Indent;
import services.IndentService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet("/user3")//访问接口的名字
public class IndentController extends HttpServlet {
    private static Gson gson=new Gson();//第三方插件，返回gson格式的插件

    @Override//重写
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//请求 响应  针对的是前端页面的get方法
        //用户所做的操作
        resp.setContentType("text/html;charset=utf-8");
        String oper = req.getParameter("oper");//获取地址栏当中oper后边的值   请求对象实例化
        System.out.println("获取地址栏当中的数据为：" + oper);//能否获取地址栏中的值
        //indent表的数据
        /* String indentid2=req.getParameter("indentid2");*/
        /*String suppliername=req.getParameter("suppliername");*/
        /*String sender=req.getParameter("sender");*/
        /*String sendtime=req.getParameter("sendtime");*/
        /* String requirementlist=req.getParameter("requirementlist");*/
        /*String needtime=req.getParameter("needtime");*/
        /*String explainn=req.getParameter("explainn");*/

        Indent indent = new Indent();////ident表实例化

        /*indent.setIndentid2(indentid2);//调用set方法拿到给各个对象设置的值*/
        /*indent.setSuppliername(suppliername);
        indent.setSender(sender);
        indent.setSendtime(sendtime);*/
        /*indent.setRequirementlist(requirementlist);*/
        /* indent.setNeedtime(needtime);*/
        /*indent.setExplainn(explainn);*/

        List<Indent> tempReturn1 = null;//返回集合操作结果  （查询时候使用）没有new的还要进行实例化

        int tempReturn = 0;//返回int操作结果  （增删改时使用）
        IndentService indentService = new IndentService();//实例化业务功能类

        System.out.println("您要做的操作是（1：单项查询/2:增加/3:修改/4:删除/）" + oper);
        if (oper != null) {//判断地址栏输入的oper不等于空    选择要做的操作
            if (req.getParameter("indentid") != null) {
                String indentid = req.getParameter("indentid");
                System.out.println("获得地址栏中表的数据为" + indentid);
            }
            if (req.getParameter("indentid2") != null) {
                String indentid2 = req.getParameter("indentid2");
                System.out.println("获得地址栏中表的数据为" + indentid2);
                indent.setIndentid2(indentid2);
            }
            if (req.getParameter("suppliername") != null) {
                String suppliername = req.getParameter("suppliername");
                System.out.println("获得地址栏中表的数据为" + suppliername);
                indent.setSuppliername(suppliername);
            }
            if (req.getParameter("sender") != null) {
                String sender = req.getParameter("sender");
                System.out.println("获得地址栏中表的数据为" + sender);
                indent.setSender(sender);
            }

            if (req.getParameter("sendtime") != null) {
                String sendtime = req.getParameter("sendtime");
                System.out.println("获得地址栏中表的数据为" + sendtime);
                indent.setSendtime(sendtime);
            }
            if (req.getParameter("requirementlist") != null) {
                String requirementlist = req.getParameter("requirementlist");
                System.out.println("获得地址栏中表的数据为" + requirementlist);
                indent.setRequirementlist(requirementlist);
            }
            if (req.getParameter("needtime") != null) {
                String needtime = req.getParameter("needtime");
                System.out.println("获得地址栏中表的数据为" + needtime);
                indent.setNeedtime(needtime);
            }
            if (req.getParameter("explainn") != null) {
                String explainn = req.getParameter("explainn");
                System.out.println("获得地址栏中表的数据为" + explainn);
                indent.setExplainn(explainn);
            }
            //操作的内容
            switch (oper) {
                case "1":
                    //单项查询
                    tempReturn1 = indentService.getDan(indent);//调用service层的getall方法 返回查询结果
                    break;
                case "2":
                    //添加
                    tempReturn = indentService.add(indent);//调用service层的add方法  返回添加结果
                    if (tempReturn == 0) {
                        System.out.println("失败" + tempReturn);
                    } else {
                        System.out.println("成功" + tempReturn);
                    }
                    break;
                case "3":
                    //修改
                    String indentid = req.getParameter("indentid");//主键  修改时必须获取表中主键（地址栏中必须有该参数）
                    indent.setIndentid(Integer.parseInt(indentid));//强制类型转换  给实体主键赋值
                    System.out.println(indentid);
                    String suppliername = req.getParameter("suppliername");//主键  修改时必须获取表中主键（地址栏中必须有该参数）
                    indent.setSuppliername(suppliername);
                    tempReturn = indentService.update(indent);//调用service层的update方法  返回修改结果
                    break;
                case "4":
                    //删除
                    String indentid1 = req.getParameter("indentid");//主键  删除时必须获取表中主键（地址栏中必须有该参数）
                    if (indentid1 != null) {
                        indent.setIndentid(Integer.parseInt(indentid1));//强制类型转换  给实体主键赋值
                        System.out.println(indentid1);
                        tempReturn = indentService.del(indent);//调用service层的del方法  返回删除结果

                    }
                    break;
                case "5":
                    //查询全部
                    tempReturn1 = indentService.getAll(indent);//调用service层的getall方法 返回查询结果
                    break;
                case "6":
                    //更改方法按id查询
                    String indentid2 = req.getParameter("indentid");//主键  修改时必须获取表中主键（地址栏中必须有该参数）
                    indent.setIndentid(Integer.parseInt(indentid2));//强制类型转换  给实体主键赋值
                    tempReturn1 = indentService.getAddc(indent);//调用service层的getall方法 返回查询结果
                    break;
            }

            //设置返回信息

            //将所有的返回值都写入到map当中
            Map map = new HashMap();//
            map.put("code", "1");//返回编号：1：成功；0：失败；-1：项目负责人重复
            map.put("statue", "success");
            if (tempReturn1 != null) {
                map.put("results", tempReturn1);//成功的结果 操作的结果
            } else {
                map.put("results", tempReturn);
            }
            //将数据转换为gson格式进行发送
            String rs = gson.toJson(map);
            //将数据发送后并进行打印
            resp.getWriter().print(rs);
        }
    }
    @Override
    protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{//请求  响应  针对的是前端页面的post方法
        super.doGet(req,resp);//调用父类方法
    }
}
